PolarsのList: 特定の条件を満たした要素を含む行を抽出する
例えば、文字列リストのカラムに対して、aから始まるものを含んでいる行を抽出したい
code:py
df = pl.DataFrame(
{
"tags": [
],
}
)
https://gyazo.com/e30e008a7927afd069c83206933dfde0
code:py
df.filter(
pl.col("tags").list.eval(pl.element().str.contains("^a")).list.any()
)
code:py
df.filter(
pl.col("tags").list.eval(pl.element().str.starts_with("a")).list.any()
)
https://gyazo.com/2b34c36e6da5333339c1ee733829c4a3
.filterではなく.selectで見ると意味がわかりやすい
code:py
df.select(
pl.col("tags").list.eval(pl.element().str.contains("^a"))
)
https://gyazo.com/693d0688224082e262e683a182cb6c6c
これだと何もヒットしない
code:py
df.filter(pl.col("tags").list.contains("a"))
code:py
df.filter(pl.col("tags").list.contains("^a"))
ちなみにこれはヒットする
code:py
df.filter(pl.col("tags").list.contains("apple"))
https://gyazo.com/db47eb8dd2e5a4a72dee9a3983e625e4
正規表現は使えず、完全一致じゃないとダメそう(?)
issueが出てた